package com.ihr360.payroll.service.salaryreport;

import com.ihr360.commons.entity.AuthUserInfo;
import com.ihr360.commons.vo.PageData;
import com.ihr360.payroll.entity.salary.SalaryReportPlanEntity;
import com.ihr360.payroll.model.dto.salary.report.MergeSalaryReport;
import com.ihr360.payroll.model.response.salaryreport.MergeSalaryReportResponse;
import com.ihr360.payroll.model.response.salaryreport.SalaryReportResponse;
import com.ihr360.payroll.request.salaryReport.MergeSalaryQueryRequest;
import com.ihr360.payroll.request.salaryReport.MergeSalaryReportRequest;
import com.ihr360.payroll.request.salaryReport.SalaryReportRequest;
import com.ihr360.payroll.response.salaryreport.MergeReportMonthResponse;
import com.ihr360.rest.service.SimpleRestService;

import java.io.OutputStream;
import java.util.List;

/**
 * Created by Eric on 2018/4/12/012.
 */
public interface MergeSalaryReportService extends SimpleRestService<MergeSalaryReport, Long> {
    /**
     * 获取合并方案列表
     */
    List<SalaryReportPlanEntity> getPlanList(String companyId);

    PageData<MergeSalaryReportResponse> queryMergeReportList(AuthUserInfo authUserInfo, SalaryReportRequest reportRequest);

    void updateMergeReportName(String companyId, Long mergeReportId, String name, String remark);

    void saveMergeReport(String companyId, MergeSalaryReportRequest request);

    SalaryReportResponse queryMergeReportSalaryList(String companyId, MergeSalaryQueryRequest reportRequest);

    SalaryReportResponse queryMergeReportSalaryHead(String companyId, MergeSalaryQueryRequest reportRequest);

    void exportMergeReportSalaryList(String companyId, MergeSalaryQueryRequest reportRequest, OutputStream out);

    List<MergeReportMonthResponse> queryMergeReportMonthList(String companyId, Long mergeReportId, int year);

    List<Integer> queryMergeReportYearList(String companyId, Long mergeReportId);

}
